💡 AI 인사이트

🤖 AI가 여기에 결과를 출력합니다...

댓글 커뮤니티

쿠팡이벤트

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

검색

    [코담] 웹개발·실전 프로젝트·AI까지, 파이썬·장고의 모든것을 담아낸 강의와 개발 노트

    문제 쇼핑몰 장바구니 시뮬레이션 | ✅저자: 이유정(박사)

    🖥️ 프로젝트 개요:

    클래스를 활용해 상품 등록, 장바구니 추가, 총합 계산 기능을 포함한 간단한 쇼핑몰 시뮬레이션을 구현합니다.

    ◽ 이 프로젝트를 통해 자연스럽게 적용되는 내용:

    • 클래스 간 관계(객체 포함 구조)
    • 딕셔너리와 리스트 활용
    • 함수와 메서드 혼합 사용
    • 클래스 메서드 호출 및 데이터 저장
    • 조건문, 반복문, 포맷 출력 활용

    📄 기능 요구사항 (Functional Requirements):

    • Product 클래스: 상품 이름, 가격
    • Cart 클래스: 장바구니에 상품과 수량을 저장
    • add_product(product, qty) 메서드로 상품 추가
    • get_total()로 총 금액 반환
    • 장바구니 상품 목록 출력

    📄 비기능 요구사항 (Non-Functional Requirements):

    • Cart 클래스 내부에 상품 목록을 딕셔너리로 저장 ({product_obj: qty})
    • 출력 시 가격에 콤마(,) 단위 표시, 총합은 단위로 표기
    • 객체 지향적인 코드 구조 유지

    🖨️ 출력 포맷 구성:

    🛒 장바구니 내역:
    - 티셔츠 x 2개 = 30,000원
    - 바지 x 1개 = 25,000원
    총 합계: ₩55,000
    

    ✅ 정답코드:

    class Product:
        def __init__(self, name, price):
            self.name = name
            self.price = price
    
    class Cart:
        def __init__(self):
            self.items = {}
    
        def add_product(self, product, qty):
            if product in self.items:
                self.items[product] += qty
            else:
                self.items[product] = qty
    
        def get_total(self):
            return sum(p.price * q for p, q in self.items.items())
    
        def show_cart(self):
            print("🛒 장바구니 내역:")
            for product, qty in self.items.items():
                total_price = product.price * qty
                print(f"-{product.name} x {qty}개 = {total_price:,}원")
            print(f"총 합계: ₩{self.get_total():,}")
    
    # 상품 정의
    shirt = Product("티셔츠", 15000)
    pants = Product("바지", 25000)
    
    # 장바구니 생성 및 추가
    cart = Cart()
    cart.add_product(shirt, 2)
    cart.add_product(pants, 1)
    
    # 결과 출력
    cart.show_cart()
    

    🔍 코드 해설:

    • Product는 상품 정보를 관리
    • Cart는 상품 객체를 키로 사용해 수량을 저장
    • get_total()은 장바구니 전체 금액 계산
    • show_cart()는 품목과 총합을 포맷팅하여 출력
    TOP
    preload preload